﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Controller;

namespace GUI
{
    public partial class frmOpretKunde : Form
    {
        ScootermaerkeController smc = new ScootermaerkeController();
        KundeController kc = new KundeController();
        ScooterController sc = new ScooterController();
        int postnummer = 0;
        string byNavn = "";
        
        public frmOpretKunde()
        {
            InitializeComponent();
            
        }

        private void frmOpretKunde_Load(object sender, EventArgs e)
        {
            List<Iscootermaerke> scootermaerkeListe = smc.HentScooterMaerker();
            foreach (Iscootermaerke item in scootermaerkeListe)
            {
                cmbMaerke.Items.Add(item.Maerke.ToString());
            }
        }

        private void txtPostnummer_TextChanged(object sender, EventArgs e)
        {
            postnummer = 0;
            if (txtPostnummer.Text.Length == 4)
            {
                try
                {
                    postnummer = Convert.ToInt32(txtPostnummer.Text);

                    byNavn = kc.HentByForPostnr(postnummer);

                    if (byNavn != "")
                    {
                        txtBynavn.Text = byNavn;
                    }
                    else
                    {
                        MessageBox.Show("Ukendt postnummer. Tjeck nummeret og prøv igen.");
                    }
                }
                catch (FormatException)
                {
                    MessageBox.Show("Ugyldigt postnummer. Postnummeret skal være 4 cifre og må ikke indeholde andet end tal");
                    txtPostnummer.Text = "";
                }
            }
            else
            {
                txtBynavn.Text = "";
            }
        }

        private void btnLuk_Click(object sender, EventArgs e)
        {
            this.Close();
            
        }

        private void btnOpret_Click(object sender, EventArgs e)
        {
            bool inputIsValidated = false;
            string manglendeDateFejlbeskrivelse = "";

            KundeController kc = new KundeController();
            string navn = txtNavn.Text;
            string adresse = txtAdresse.Text;
            
            string tlf = txtTlf.Text;
            string mail = txtMail.Text;
            int stelnummer = 0;

            if (txtStelnummer.Text.Length > 0)
            {
                try
                {
                    stelnummer = Convert.ToInt32(txtStelnummer.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Ugyldigt stelnummer. Stelnummeret må kun indeholde tal");
                }
            }

            string maerke;
            try
            {
                maerke = cmbMaerke.SelectedItem.ToString();
            }
            catch (NullReferenceException)
            {
                maerke = "";
            
            }  

            if (navn.Length == 0) { manglendeDateFejlbeskrivelse += "navn\n"; }
            if (adresse.Length == 0) { manglendeDateFejlbeskrivelse += "adresse\n"; }
            if (postnummer == 0) { manglendeDateFejlbeskrivelse += "postnummer\n"; }
            if (tlf.Length == 0) { manglendeDateFejlbeskrivelse += "telefonnummer\n"; }
            if (mail.Length == 0) { manglendeDateFejlbeskrivelse += "email\n"; }
            if (stelnummer == 0) { manglendeDateFejlbeskrivelse += "stelnummer\n"; }
            if (maerke.Length == 0) { manglendeDateFejlbeskrivelse += "mærke"; }

            if (manglendeDateFejlbeskrivelse.Length > 0)
            {
                MessageBox.Show("Der mangler data i følgende felter\n" + manglendeDateFejlbeskrivelse);
            }
            else
            {
                inputIsValidated = true;
            }

            if (inputIsValidated)
            {
                GuiKunde nyKunde = new GuiKunde(navn, adresse, postnummer, tlf, mail, maerke);
                kc.GemKunde(nyKunde);

                // Indsætter scooteren til kunden
                Ikunde sidsteKunde = kc.HentSidstIndsatte();
                GuiScooter scooter = new GuiScooter(stelnummer, sidsteKunde.Maerke, sidsteKunde.Kundenr);
                
                sc.GemKundescooter(scooter);

                MessageBox.Show("Kunden er oprettet og har fået kundenummer " + sidsteKunde.Kundenr);
                
                txtNavn.Enabled = false;
                txtAdresse.Enabled = false;
                txtPostnummer.Enabled = false;
                txtTlf.Enabled = false;
                txtMail.Enabled = false;
                txtStelnummer.Enabled = false;
                cmbMaerke.Enabled = false;

                // Skjul "opret knappen"
                btnOpret.Visible = false;
            }
        }
    }
}
